package cn.itcast.nems.order.dao.entity;

import cn.itcast.nems.common.entity.UUIDEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
 * <p>
 * 销售订单-行
 * </p>
 *
 * @author liyong
 * @since 2023-08-31
 */
@Getter
@Setter
@TableName("e2_order_line")
@NoArgsConstructor
public class OrderLine extends UUIDEntity {

    /**
     * 订单ID
     */
    private String orderId;

    /**
     * 商品Id
     */
    private Long productId;

    /**
     * 产品快照ID
     */
    private String productSnapshotId;

    /**
     * 产品名称
     */
    private String productName;

    /**
     * 产品所属校区ID
     */
    private String productCampusId;

    /**
     * 产品所属校区名称
     */
    private String productCampusName;

    /**
     * 产品所属学科ID
     */
    private String productSubjectId;

    /**
     * 产品所属学科名称
     */
    private String productSubjectName;

    /**
     * 产品授课模式ID
     */
    private String productModelId;

    /**
     * 产品授课模式名称
     */
    private String productModelName;
    /**
     * 班级类型
     */
    private String productClassTypeId;
    /**
     * 班级类型名称
     */
    private String productClassTypeName;
    /**
     * 产品划线价。单位：分
     */
    private Integer listPrice;

    /**
     * 产品标准价格。单位：分
     */
    private Integer price;

    /**
     * 购买数量
     */
    private Byte quantity;

    /**
     * 产品购买总金额=产品标准价格*购买数量。单位：分
     */
    private Integer originalAmount;

    /**
     * 优惠金额总额。注：如果是基于整单的优惠，优惠金额应分摊到订单行上！单位：分
     */
    private Integer discountAmount;

    /**
     * 应付金额=订单原金额-优惠金额总额。单位：分
     */
    private Integer amountDue;

    /**
     * 首次支付：为0时必须全额支付、大于0时按照指定金额支付。注：短训有预报名费的流程，所以该值通常大于零，其他业务线无此流程时，该值可为0。单位：分
     */
    private Integer firstPayment;

    public OrderLine(String productCampusId, String productSubjectId, String productModelId, String productClassTypeId,Integer price  ) {
        this.productCampusId = productCampusId;
        this.productSubjectId = productSubjectId;
        this.productModelId = productModelId;
        this.productClassTypeId = productClassTypeId;
        this.price = price ;
    }
}
